Concatenating multiple feature extraction methods

目前对这个部分没有很理解. 暂时保留代码. 找时间细细研究为什么要这么做.

origin_url


In [2]:
# %load ../common_import.py
import numpy as np
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
from sklearn import datasets

In [3]:
from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest

In [6]:
SVC?

In [14]:
iris = datasets.load_iris()
# X = pd.DataFrame(iris.data)
# y = pd.DataFrame(iris.target)
X, y = iris.data, iris.target

In [15]:
# This dataset is way too high-dimensional. Better do PCA:
pca = PCA(n_components=2)

# Maybe some original features where good, too?
selection = SelectKBest(k=1)

# Build estimator from PCA and Univariate selection:
combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])

# Use combined features to transform dataset:
X_features = combined_features.fit(X, y).transform(X)

svm =SVC(kernel="linear")

# Do grid search over k, n_components and C:
pipeline = Pipeline([("features", combined_features), ("svm", svm)])

param_grid = dict(features__pca__n_components=[1,2,3],
                 features__univ_select__k=[1, 2],
                 svm__C=[0.1, 1, 10])

In [16]:
grid_search = GridSearchCV(pipeline, param_grid=param_grid, verbose=10)
grid_search.fit(X, y)
print(grid_search.best_estimator_)


Fitting 3 folds for each of 18 candidates, totalling 54 fits
[CV] features__univ_select__k=1, svm__C=0.1, features__pca__n_components=1 
[CV]  features__univ_select__k=1, svm__C=0.1, features__pca__n_components=1, score=0.9607843137254902, total=   0.0s
[CV] features__univ_select__k=1, svm__C=0.1, features__pca__n_components=1 
[CV]  features__univ_select__k=1, svm__C=0.1, features__pca__n_components=1, score=0.9019607843137255, total=   0.0s
[CV] features__univ_select__k=1, svm__C=0.1, features__pca__n_components=1 
[CV]  features__univ_select__k=1, svm__C=0.1, features__pca__n_components=1, score=0.9791666666666666, total=   0.0s
[CV] features__univ_select__k=1, svm__C=1, features__pca__n_components=1 
[CV]  features__univ_select__k=1, svm__C=1, features__pca__n_components=1, score=0.9411764705882353, total=   0.0s
[CV] features__univ_select__k=1, svm__C=1, features__pca__n_components=1 
[CV]  features__univ_select__k=1, svm__C=1, features__pca__n_components=1, score=0.9215686274509803, total=   0.0s
[CV] features__univ_select__k=1, svm__C=1, features__pca__n_components=1 
[CV]  features__univ_select__k=1, svm__C=1, features__pca__n_components=1, score=0.9791666666666666, total=   0.0s
[CV] features__univ_select__k=1, svm__C=10, features__pca__n_components=1 
[CV]  features__univ_select__k=1, svm__C=10, features__pca__n_components=1, score=0.9607843137254902, total=   0.0s
[CV] features__univ_select__k=1, svm__C=10, features__pca__n_components=1 
[CV]  features__univ_select__k=1, svm__C=10, features__pca__n_components=1, score=0.9215686274509803, total=   0.0s
[CV] features__univ_select__k=1, svm__C=10, features__pca__n_components=1 
[CV]  features__univ_select__k=1, svm__C=10, features__pca__n_components=1, score=0.9791666666666666, total=   0.0s
[CV] features__univ_select__k=2, svm__C=0.1, features__pca__n_components=1 
[CV]  features__univ_select__k=2, svm__C=0.1, features__pca__n_components=1, score=0.9607843137254902, total=   0.0s
[CV] features__univ_select__k=2, svm__C=0.1, features__pca__n_components=1 
[CV]  features__univ_select__k=2, svm__C=0.1, features__pca__n_components=1, score=0.9215686274509803, total=   0.0s
[CV] features__univ_select__k=2, svm__C=0.1, features__pca__n_components=1 
[CV]  features__univ_select__k=2, svm__C=0.1, features__pca__n_components=1, score=0.9791666666666666, total=   0.0s
[CV] features__univ_select__k=2, svm__C=1, features__pca__n_components=1 
[CV]  features__univ_select__k=2, svm__C=1, features__pca__n_components=1, score=0.9607843137254902, total=   0.0s
[CV] features__univ_select__k=2, svm__C=1, features__pca__n_components=1 
[CV]  features__univ_select__k=2, svm__C=1, features__pca__n_components=1, score=0.9215686274509803, total=   0.0s
[CV] features__univ_select__k=2, svm__C=1, features__pca__n_components=1 
[CV]  features__univ_select__k=2, svm__C=1, features__pca__n_components=1, score=1.0, total=   0.0s
[CV] features__univ_select__k=2, svm__C=10, features__pca__n_components=1 
[CV]  features__univ_select__k=2, svm__C=10, features__pca__n_components=1, score=0.9803921568627451, total=   0.0s
[CV] features__univ_select__k=2, svm__C=10, features__pca__n_components=1 
[CV]  features__univ_select__k=2, svm__C=10, features__pca__n_components=1, score=0.9019607843137255, total=   0.0s
[CV] features__univ_select__k=2, svm__C=10, features__pca__n_components=1 
[CV]  features__univ_select__k=2, svm__C=10, features__pca__n_components=1, score=1.0, total=   0.0s
[CV] features__univ_select__k=1, svm__C=0.1, features__pca__n_components=2 
[CV]  features__univ_select__k=1, svm__C=0.1, features__pca__n_components=2, score=0.9607843137254902, total=   0.0s
[CV] features__univ_select__k=1, svm__C=0.1, features__pca__n_components=2 
[CV]  features__univ_select__k=1, svm__C=0.1, features__pca__n_components=2, score=0.9019607843137255, total=   0.0s
[CV] features__univ_select__k=1, svm__C=0.1, features__pca__n_components=2 
[CV]  features__univ_select__k=1, svm__C=0.1, features__pca__n_components=2, score=0.9791666666666666, total=   0.0s
[CV] features__univ_select__k=1, svm__C=1, features__pca__n_components=2 
[CV]  features__univ_select__k=1, svm__C=1, features__pca__n_components=2, score=0.9803921568627451, total=   0.0s
[CV] features__univ_select__k=1, svm__C=1, features__pca__n_components=2 
[CV]  features__univ_select__k=1, svm__C=1, features__pca__n_components=2, score=0.9411764705882353, total=   0.0s
[CV] features__univ_select__k=1, svm__C=1, features__pca__n_components=2 
[CV]  features__univ_select__k=1, svm__C=1, features__pca__n_components=2, score=0.9791666666666666, total=   0.0s
[CV] features__univ_select__k=1, svm__C=10, features__pca__n_components=2 
[CV]  features__univ_select__k=1, svm__C=10, features__pca__n_components=2, score=0.9803921568627451, total=   0.0s
[CV] features__univ_select__k=1, svm__C=10, features__pca__n_components=2 
[CV]  features__univ_select__k=1, svm__C=10, features__pca__n_components=2, score=0.9411764705882353, total=   0.0s
[CV] features__univ_select__k=1, svm__C=10, features__pca__n_components=2 
[CV]  features__univ_select__k=1, svm__C=10, features__pca__n_components=2, score=0.9791666666666666, total=   0.0s
[CV] features__univ_select__k=2, svm__C=0.1, features__pca__n_components=2 
[CV]  features__univ_select__k=2, svm__C=0.1, features__pca__n_components=2, score=0.9803921568627451, total=   0.0s
[CV] features__univ_select__k=2, svm__C=0.1, features__pca__n_components=2 
[CV]  features__univ_select__k=2, svm__C=0.1, features__pca__n_components=2, score=0.9411764705882353, total=   0.0s
[CV] features__univ_select__k=2, svm__C=0.1, features__pca__n_components=2 
[CV]  features__univ_select__k=2, svm__C=0.1, features__pca__n_components=2, score=0.9791666666666666, total=   0.0s
[CV] features__univ_select__k=2, svm__C=1, features__pca__n_components=2 
[CV]  features__univ_select__k=2, svm__C=1, features__pca__n_components=2, score=1.0, total=   0.0s
[CV] features__univ_select__k=2, svm__C=1, features__pca__n_components=2 
[CV]  features__univ_select__k=2, svm__C=1, features__pca__n_components=2, score=0.9607843137254902, total=   0.0s
[CV] features__univ_select__k=2, svm__C=1, features__pca__n_components=2 
[CV]  features__univ_select__k=2, svm__C=1, features__pca__n_components=2, score=0.9791666666666666, total=   0.0s
[CV] features__univ_select__k=2, svm__C=10, features__pca__n_components=2 
[CV]  features__univ_select__k=2, svm__C=10, features__pca__n_components=2, score=0.9803921568627451, total=   0.0s
[CV] features__univ_select__k=2, svm__C=10, features__pca__n_components=2 
[CV]  features__univ_select__k=2, svm__C=10, features__pca__n_components=2, score=0.9215686274509803, total=   0.0s
[CV] features__univ_select__k=2, svm__C=10, features__pca__n_components=2 
[CV]  features__univ_select__k=2, svm__C=10, features__pca__n_components=2, score=1.0, total=   0.0s
[CV] features__univ_select__k=1, svm__C=0.1, features__pca__n_components=3 
[CV]  features__univ_select__k=1, svm__C=0.1, features__pca__n_components=3, score=0.9803921568627451, total=   0.0s
[Parallel(n_jobs=1)]: Done   1 out of   1 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=1)]: Done   2 out of   2 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=1)]: Done   3 out of   3 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=1)]: Done   4 out of   4 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=1)]: Done   5 out of   5 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=1)]: Done   6 out of   6 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=1)]: Done   7 out of   7 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=1)]: Done   8 out of   8 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=1)]: Done   9 out of   9 | elapsed:    0.1s remaining:    0.0s
[CV] features__univ_select__k=1, svm__C=0.1, features__pca__n_components=3 
[CV]  features__univ_select__k=1, svm__C=0.1, features__pca__n_components=3, score=0.9411764705882353, total=   0.0s
[CV] features__univ_select__k=1, svm__C=0.1, features__pca__n_components=3 
[CV]  features__univ_select__k=1, svm__C=0.1, features__pca__n_components=3, score=0.9791666666666666, total=   0.0s
[CV] features__univ_select__k=1, svm__C=1, features__pca__n_components=3 
[CV]  features__univ_select__k=1, svm__C=1, features__pca__n_components=3, score=1.0, total=   0.0s
[CV] features__univ_select__k=1, svm__C=1, features__pca__n_components=3 
[CV]  features__univ_select__k=1, svm__C=1, features__pca__n_components=3, score=0.9411764705882353, total=   0.0s
[CV] features__univ_select__k=1, svm__C=1, features__pca__n_components=3 
[CV]  features__univ_select__k=1, svm__C=1, features__pca__n_components=3, score=0.9791666666666666, total=   0.0s
[CV] features__univ_select__k=1, svm__C=10, features__pca__n_components=3 
[CV]  features__univ_select__k=1, svm__C=10, features__pca__n_components=3, score=1.0, total=   0.0s
[CV] features__univ_select__k=1, svm__C=10, features__pca__n_components=3 
[CV]  features__univ_select__k=1, svm__C=10, features__pca__n_components=3, score=0.9215686274509803, total=   0.0s
[CV] features__univ_select__k=1, svm__C=10, features__pca__n_components=3 
[CV]  features__univ_select__k=1, svm__C=10, features__pca__n_components=3, score=1.0, total=   0.0s
[CV] features__univ_select__k=2, svm__C=0.1, features__pca__n_components=3 
[CV]  features__univ_select__k=2, svm__C=0.1, features__pca__n_components=3, score=0.9803921568627451, total=   0.0s
[CV] features__univ_select__k=2, svm__C=0.1, features__pca__n_components=3 
[CV]  features__univ_select__k=2, svm__C=0.1, features__pca__n_components=3, score=0.9411764705882353, total=   0.0s
[CV] features__univ_select__k=2, svm__C=0.1, features__pca__n_components=3 
[CV]  features__univ_select__k=2, svm__C=0.1, features__pca__n_components=3, score=0.9791666666666666, total=   0.0s
[CV] features__univ_select__k=2, svm__C=1, features__pca__n_components=3 
[CV]  features__univ_select__k=2, svm__C=1, features__pca__n_components=3, score=1.0, total=   0.0s
[CV] features__univ_select__k=2, svm__C=1, features__pca__n_components=3 
[CV]  features__univ_select__k=2, svm__C=1, features__pca__n_components=3, score=0.9607843137254902, total=   0.0s
[CV] features__univ_select__k=2, svm__C=1, features__pca__n_components=3 
[CV]  features__univ_select__k=2, svm__C=1, features__pca__n_components=3, score=0.9791666666666666, total=   0.0s
[CV] features__univ_select__k=2, svm__C=10, features__pca__n_components=3 
[CV]  features__univ_select__k=2, svm__C=10, features__pca__n_components=3, score=1.0, total=   0.0s
[CV] features__univ_select__k=2, svm__C=10, features__pca__n_components=3 
[CV]  features__univ_select__k=2, svm__C=10, features__pca__n_components=3, score=0.9215686274509803, total=   0.0s
[CV] features__univ_select__k=2, svm__C=10, features__pca__n_components=3 
[CV]  features__univ_select__k=2, svm__C=10, features__pca__n_components=3, score=1.0, total=   0.0s
Pipeline(memory=None,
     steps=[('features', FeatureUnion(n_jobs=1,
       transformer_list=[('pca', PCA(copy=True, iterated_power='auto', n_components=2, random_state=None,
  svd_solver='auto', tol=0.0, whiten=False)), ('univ_select', SelectKBest(k=2, score_func=<function f_classif at 0x11348c1e0>))],
       transformer_we...,
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False))])
[Parallel(n_jobs=1)]: Done  54 out of  54 | elapsed:    0.3s finished

In [ ]: